﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using DTO;
using System.Data;

namespace GUI.Admin.uc
{
    public partial class Ad_LichSuGiaoDichUC : System.Web.UI.UserControl
    {
        #region Khai báo
        private LichSuGiaoDichBLL _lsgdBLL;
        private LichSuGiaoDichDTO _lsgdDTO;
        private List<LichSuGiaoDichDTO> _lst;
        private int _truonghop = 0;
        #endregion

        #region Page_Load
        protected void Page_Load(object sender, EventArgs e)
        {
            /*
                 * Khi Form load thì thực hiện các thao tác sau:
                 * 1. Hiển thị Panel danh sách lịch sử giao dịch           
                 * 2. Ẩn Panel thêm, sửa thông tin lịch sử giao dịch           
                 * 3. Load dữ liệu vào Gridview
                 * 4. Hiển thị tổng số lịch sử giao dịch vào Label
                 */
            if (!IsPostBack)
            {
                try
                {
                    // Load data vào gridview
                    this.LoadDuLieu(_truonghop);
                }
                catch (Exception ex)
                {
                    Response.Redirect("../ErrorMessage.aspx?err=" + ex.Message + " ");
                }
            }
        }
        #endregion

        #region Phương thức hiển thị danh sách lịch sử giao dịch vào gridview
        /// <summary>
        /// Phương thức hiển thị danh sách lịch sử giao dịch vào gridview
        /// </summary>
        private void LoadDuLieu(int truonghop)
        {
            _lsgdBLL = new LichSuGiaoDichBLL();
            _lst = new List<LichSuGiaoDichDTO>();

            try
            {
                if (truonghop == 0) // Trường hợp hiển thị danh sách ko có bộ lọc
                {
                    _lst = _lsgdBLL.GetListLichSuGiaoDich();

                }
                else // Trường hợp hiển thị danh sách có bộ lọc
                {
                    _lst = _lsgdBLL.GetListLichSuGiaoDich(this.DatePickerTuNgay.SelectedDate, this.DatePickerDenNgay.SelectedDate);
                }

                GridViewLichSuGiaoDich.DataSource = _lst;
                GridViewLichSuGiaoDich.DataBind();

                // Hiển thị tổng số lịch sử giao dịch vào Label
                int d = _lst.Count;
                this.LabelTongSoLichSuGiaoDich.Text = Convert.ToString(d);
                if (d == 0)
                {
                    this.LabelThongBao.Text = "Chưa có lịch sử giao dịch nào !";
                    this.LabelThongBao.Visible = true;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        #endregion

        #region ImageButtonXoa_Click
        protected void ImageButtonXoa_Click(object sender, ImageClickEventArgs e)
        {

            try
            {
                int _flag = 0;
                // Khi button xóa được click:
                // Lấy danh sách mã lịch sử giao dịch từ List<>
                // Loop từng mã lịch sử giao dịch và xóa

                _lst = new List<LichSuGiaoDichDTO>();
                int _n = GridViewLichSuGiaoDich.Rows.Count;
                for (int i = 0; i < _n; i++)
                {
                    _lsgdDTO = new LichSuGiaoDichDTO();
                    GridViewRow _gvr = GridViewLichSuGiaoDich.Rows[i];
                    bool _ischecked = ((CheckBox)_gvr.Cells[0].FindControl("CheckBoxItem")).Checked;
                    if (_ischecked == true) // Dòng đó được check
                    {
                        _flag = 1; // Xác nhận checkbox có check
                        // Tìm mã lịch sử giao dịch
                        Label _mabv = (Label)_gvr.Cells[0].FindControl("LabelMaLichSuGiaoDich");

                        _lsgdDTO.MaLichSuGiaoDich = int.Parse(_mabv.Text);

                        // Lưu vào list
                        this._lst.Add(_lsgdDTO);
                    }
                }

                if (_flag == 1)
                {
                    // Tới đây là ta đã có 1 List<int> mã lịch sử giao dịch
                    // Loop all, gọi hàm xóa 1 lịch sử giao dịch
                    _lsgdBLL = new LichSuGiaoDichBLL();
                    string _id = "";

                    int _n2 = this._lst.Count;
                    for (int i = 0; i < _n2; i++)
                    {
                        _lsgdBLL.Xoa(this._lst[i]);
                        _id += this._lst[i].MaLichSuGiaoDich.ToString();
                        if (i < _n2 - 1)
                        {
                            _id += ",";
                        }
                    }

                    // Thông báo cho user biết đã xóa các dòng nào

                    Page.ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('Đã xóa thành công các dòng có ID = " + _id + " ');", true);

                    // Load data vào gridview
                    this.LoadDuLieu(_truonghop);
                }
                else // Ko có checkbox nào được check
                {
                    // Thông báo cho user biết chưa chọn dòng nào
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('Bạn chưa chọn dòng nào để xóa !');", true);

                }
            }
            catch (Exception ex)
            {
                Response.Redirect("../ErrorMessage.aspx?err=" + ex.Message + " ");
            }
        }
        #endregion

        #region CheckBoxItem_CheckedChanged
        protected void CheckBoxItem_CheckedChanged(object sender, EventArgs e)
        {

        }
        #endregion

        #region GridViewLichSuGiaoDich_PageIndexChanging
        protected void GridViewLichSuGiaoDich_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                GridViewLichSuGiaoDich.PageIndex = e.NewPageIndex;
                this.LoadDuLieu(_truonghop);
            }
            catch (Exception ex)
            {
                Response.Redirect("../ErrorMessage.aspx?err=" + ex.Message + " ");
            }
        }
        #endregion

        #region GridViewLichSuGiaoDich_RowDataBound
        protected void GridViewLichSuGiaoDich_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowIndex >= 0)
                {
                    e.Row.Attributes.Add("onMouseOver", "this.style.backgroundColor='#bde2fd'");

                    if (e.Row.RowIndex % 2 == 0)
                        e.Row.Attributes.Add("onMouseOut", "this.style.backgroundColor='#EFF3FB'");
                    else
                        e.Row.Attributes.Add("onMouseOut", "this.style.backgroundColor='White'");

                }
            }
            catch (Exception ex)
            {
                Response.Redirect("../ErrorMessage.aspx?err=" + ex.Message + " ");
            }
        }
        #endregion

        #region ButtonThucHien_Click
        protected void ButtonThucHien_Click(object sender, EventArgs e)
        {
            // Xác định trường hợp hiển thị danh sách có bộ lọc
            _truonghop = 1;
            this.LoadDuLieu(_truonghop);
        }
        #endregion
    }
}